﻿

var _this = this;

var popup=false;
var watchClose;

$(document).ready(function() {
	
	
//	버튼 등록
	$('#add_question').click(add_question);
	$('#remove_question').click(remove_question);
	$('#preview').click(preview);
	$('#save').click(save);
	popup.closed=true;	
	
	initbindingBtnFunction();
	
	
});

function save(){
//	if(checkAllInput()){
//		pezAlert("에러");
//		return;
//	}
}

function checkAllInput(){
	var retFlag = false;
	
	$('#tbl1').find('#subTbl').each(function(){
		var body = this;
		var qType = $(body).find('#answerToggle').attr('value');
		switch(qType){
		case '0':{
			var value = $(body).find('input:radio:checked').val();
			if(value == undefined){
				retFlag = true;
				return 1;	// break;
			}
			break;
		}
		case '1':{
			var value = $(body).find('input:radio:checked').val();
			if(value == undefined){
				retFlag = true;
				return 1;	// break;
			}
			break;
			break;
		}
		}
	});
	
	return retFlag;
}
function setEventPopupClosed(){
	try{
		watchClose = setInterval(function() {
			if (popup.closed) {
				clearTimeout(watchClose);
//				pezAlert("aaaaaaaaaaaa");
//				location.reload();
			} 
		}, 400);	
	}catch(e){
		errLog(e);
	}
}


var currentBtnType={
		NONE:0,
		ADD:1,
		DELETE:2,
		MODIFY:3
};

function currentBtn(type){
	if(typeof type == 'undefined'){
		return _this.btnType;
	}else{
		_this.btnType=type;
	}
}

/**
 * 테이블 속 버튼 등록을 위한
 * 객체 전달
 */
function initbindingBtnFunction(){
	
	bindingBtnFunction($('#tbl1 > tbody').children().last());
}

/**
 * initbindingBtnFunction 에서 전달 받은 객체에 있는
 * 버튼에 동작 등록
 * @param id
 */
function bindingBtnFunction(id){
//	logs('bindingBtnFunction 1234');
//	logs(id);
	
	// 더하기 버튼
	$(id).find('#add_q').click(function(){
		var obj = $(this).parent().parent();
		var number = 0 ;
		
//		logs('add_q');
//		logs(obj);
		number = $(obj).find('#radio_area').children().last().children().first().attr('value');
//		logs(number);
		number=number*1;
		number++;
		$(obj).find('#radio_area').append('<div><input type="radio" id="ansRadioId" name="ansRadioId" value="'+number+'"><input name="aSeq" id="aSeq" type="text" value=""></input><br/></div>');
	});
	
	//삭제 버튼
	$(id).find('#remove_q').click(function(){
		var obj = $(this).parent().parent(); 
//		logs('remove_d');
		if($(obj).find('#radio_area').children().length==1){
			pezAlert("한개밖에 없습니다. 삭제 불가 합니다.", function(){
				
			}).type(alertType.WARNING).show();
			return;
		}
		
		var ch = $(obj).find('#radio_area').children().last();
//		logs(ch);
		ch.remove();
//		ch.html('');
//		logs(ch);
	});
//	$(id).find('#change_to_one').click(change_to_one(id));
	
	// 주관식으로 변경 버튼
	$(id).find('#change_to_one').click(function(){
		var obj = $(this).parent().parent().parent(); 
//		logs('change_to_one');
		$(obj).find('#multi').hide();
		$(obj).find('#writing').show();
		logs(obj);
		$(obj).find('#answerToggle').attr('value', '1');
		logs($(obj).find('#answerToggle').attr('value'));
	});
	
	// 선택형으로 변경 버튼
	$(id).find('#change_to_multi').click(function(){
		var obj = $(this).parent().parent().parent(); 
//		logs('change_to_multi');
		$(obj).find('#multi').show();
		$(obj).find('#writing').hide();
		logs(obj);
		$(obj).find('#answerToggle').attr('value', '0');
		logs($(obj).find('#answerToggle').attr('value'));
	});
}


/**
 * 질문 추가 버튼
 */
function add_question(){
//	logs('add_question - 111');
//	pezAlert("add_question");
//	currentBtn(currentBtnType.ADD);	// 현재 타입 저장.
//	logs('add_question 1111111');
	var last = getLastChildrenHtml();
	var lastObject = $('<tr></tr>');
	lastObject.html(last);
	var number = $(lastObject).find('#qSeq').val();
	number++;	// qSeq 자동 증가
//	logs(number);
//	logs('lastObject ----------------');
	var radio_area = $(lastObject).find('#radio_area');
	logs('lastObject -------------1---');
//	logs($(radio_area));
	logs('lastObject ----------------');
//	logs($(radio_area).find('INPUT'));
	
	// 각 INPUT 태그의 NAME과 ID를 변경.
	// RADIO 태그의 경우 같은 NAME을 사용해야 하나의 그룹으로
	// 인식되기 때문에 각 그룹별로 같은 NAME을 준다.
	$(radio_area).find('INPUT').each(function(){
		var radio = this;
		logs($(radio));
//		logs($(radio).attr('type'));
		if($(radio).attr('type')=='radio'){
			$(radio).attr('name', 'ansRadioId'+number);
			$(radio).attr('id', 'ansRadioId'+number);		
		}else if($(radio).attr('type')=='text'){
			$(radio).attr('name', 'aSeq'+number);
			$(radio).attr('id', 'aSeq'+number);		
		}
	});
	logs('lastObject ----------------');
	$(lastObject).find('#qSeq').attr('value', number);
//	logs(lastObject);
	
	// 질문 테이블을 APPEND 시킨다.(붙인다.)
	$('#tbl1 > tbody').append(lastObject);
	
	// APPEND된 테이블의 버튼에 동작 등록
	initbindingBtnFunction();
	
}

// 질문 삭제
function remove_question(){
	var message = "";
	var noChecked = true;
	
	if($('#tbl1 > tbody > tr').length==1){
		message = "아이템이 하나 밖에 없습니다. 삭제 불가합니다.";
		pezAlert(message, function(){}).type(alertType.ERROR).show();
		return;
	}
	
	
	// 체크된 테이블이 있는지 확인. 
	$('#tbl1 > tbody > tr').each(function(){
		if($(this).find('#tr_input_chkbox').attr('checked')){
			noChecked = false;
//			logs('test');
			return 1;	// break;
			
		};
	});
	
	if(noChecked){
		message = "선택된 아이템이 없습니다.";
		pezAlert(message, function(){}).type(alertType.ERROR).show();
		return;
	}else{
		message = "선택된 아이템이은 영구히 삭제되며 복원이 불가합니다.\n삭제 하시겠습니까?";
		pezAlert(message, function(){
			
			// 체크된 inputbox를 찾아서 상위-상위 태그를 삭제한다.
			$('#tbl1').find('input:checkbox:checked').parent().parent().remove();
		
		}).type(alertType.CONFIRM)
		.title("삭제 합니까?")
		.lButton("삭제")
		.rButton("취소").show();
	}
}


/**
 * 미리 보기
 * DB에 임시 저장을 하며
 * 팝업창이 뜬 뒤에
 * 팝업창에서 임시 보관된 내용을 가지고 와서
 * 화면을 구성하게 된다.
 */
function preview(){
//	pezAlert("preview");
	if(!(popup.closed==undefined||popup.closed)){
		pezAlert("팝업창이 이미 열려 있습니다.");
		return;
	}
	
	
	// DB에 JSON 형태로 전달될 데이타
	var param={};
	param['rId']=$('#rId').attr('value');
	param['rContent']=$('#rContent').attr('value');
	$('#tbl1 > tbody >tr').each(function(index){
		logs('index = '+index);
		// 질문 부분 데이타에 넣기 - 시작
		var trTag = this;
		var subParam={};
		subParam['qSeq']=$(trTag).find('#qSeq').attr('value');
		subParam['qContent']=$(trTag).find('#qContent').attr('value');
		subParam['answerToggle']=$(trTag).find('#answerToggle').attr('value');
		// 질문 부분 데이타에 넣기 - 끝
		
		// 각 질문의 대답 부분 데이타에 넣기 - 시작
		$(trTag).find('#radio_area').find('div').each(function(radioIndex){
			var radioItem = $(this).children().first().next();
			var radioItem_Id = $(radioItem).attr('id');
			subParam[radioItem_Id+'-'+(radioIndex+1)] = $(radioItem).attr('value');
		});
		// 각 질문의 대답 부분 데이타에 넣기 - 끝
//		param['tr'+index]=JSON.stringify(subParam);
		// JSON 데이타에 JSON 형태로 넣는다. 
		// 구조체 구조.
		param['tr'+index]=subParam;
	});
	logs(JSON.stringify(param));
	
	var sendParam = {'data':JSON.stringify(param)};
	// 포스트 방식으로 admin/research/save로 보낸다.
	$.post('save.json', sendParam, function(){
		// 미리보기 팝업을 발생 시킨다.
		// parameter로 rId를 넘긴다.
		// 팝업창에서는 rId로 질문을 가지고 온다.
		preview_popup(param['rId']);
	});
}

function preview_popup(rId){
	logs('rId='+rId);
	try{
		if(popup.closed==undefined||popup.closed){
			var url = "popup/research_popup?rId="+rId;
			popup = openCenterWindow( 800, 1000, url);
			setEventPopupClosed();
		}
	}catch(e){
		errLog(e);
	}
}

/**
 * 마지막 테이블 tr 전달
 * @returns
 */
function getLastChildrenHtml(){
//	logs('getLastChildrenHtml()');
	return $('#tbl1 > tbody').children().last().html();
}



function errLog(e){
	console.log(e);
}

// 로그를 찍기 위함과 동시에 로그를 없애기 위해서 logs 함수를 만들어서 사용한다.
// 로그를 찍으면 안되는 상황이 오게 되면 errLog(e) 함수 내의 console.log(e)를 삭제한다.
function logs(e){
	errLog(e);
}